package util;

import java.io.StringReader;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;

import android.util.Log;

public class XMLParser {

	public String getXmlFromUrl(String url){
		String xml = null;
		try {
			DefaultHttpClient httpClient = new DefaultHttpClient();
			HttpPost httpPost = new HttpPost(url);
			HttpResponse httpResponse = httpClient.execute(httpPost);
			HttpEntity httpEntity = httpResponse.getEntity();
			xml = EntityUtils.toString(httpEntity);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return xml;
	}
	
	public Document getDomElement(String xml){
		Document doc = null;
		DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
		try {
			DocumentBuilder db = dbf.newDocumentBuilder();
			InputSource is = new InputSource();
			is.setCharacterStream(new StringReader(xml));
			doc = db.parse(is);
		} catch (Exception e) {
			Log.e("xml", "Erro "+e);
			return null;
		}
		return doc;
	}
	
	public final String getElementValue(Node elem){
		Node child;
		if(elem != null){
			if(elem.hasChildNodes()){
				for(child = elem.getFirstChild();child != null; child = child.getNextSibling()){
					if(child.getNodeType() == Node.TEXT_NODE){
						return child.getNodeValue();
					}
				}
			}
		}
		return "";
	}
	
	public String getValue(Element item, String str){
		NodeList n = item.getElementsByTagName(str);
		return this.getElementValue(n.item(0));
	}
}
